package com.pattern.singleton.lazy;

/**
 * Description 懒汉式单例模式
 * 再被调用的创建累的实例
 *
 * @author hubiao
 * @since 2020-08-20 19:45
 */
public class LazySingleton {
    /**
     * 1.声明类
     */
    private static LazySingleton lazySingleton = null;

    /**
     * 2.声明私有构造方法 使类不能被 new创建
     */
    private LazySingleton() {
    }

    /**
     * 3.提供一个全局的访问点
     * 注意：为了防止多线程情况下违背了单例模式，使用锁（synchronized）来防止多线程情况下创建多个实例
     */
    public synchronized static LazySingleton getInstance() {
        //当lazySingleton为null的时候实例化类，否则直接返回
        if (lazySingleton == null) {
            lazySingleton = new LazySingleton();
        }
        return lazySingleton;
    }

}
